从本地高可用到异地容灾
本地高可用解决的是机房内部的故障(服务器宕机、进程崩溃),但无法应对机房级别的灾难——光纤被挖断、停电、自然灾害等。异地容灾(Disaster Recovery)就是为了解决这类问题。
容灾方案等级
冷备(Cold Standby)
备份数据中心平时不运行,当主数据中心发生故障时,手动启动备份数据中心并恢复数据。
- 恢复时间:小时级到天级
- 成本:低
- 数据丢失:可能丢失大量数据
温备(Warm Standby)
备份数据中心处于运行状态但不提供服务,数据定期从主数据中心同步。
- 恢复时间:分钟级到小时级
- 成本:中等
- 数据丢失:较少
热备(Hot Standby)
备份数据中心实时同步数据,随时可以接管服务。
- 恢复时间:秒级到分钟级
- 成本:高
- 数据丢失:极少
双活 / 多活(Active-Active)
多个数据中心同时提供服务,流量在多个数据中心之间分配。任一数据中心故障,其他数据中心无缝接管。
- 恢复时间:接近零
- 成本:最高
- 数据丢失:几乎为零
多活架构的关键技术
数据同步
多活架构最大的挑战是数据一致性。多个数据中心同时接受写入,如何保证数据不冲突?
| 方案 | 说明 | 适用场景 |
|---|---|---|
| 同步复制 | 写操作在所有数据中心确认后才返回 | 强一致性要求高的场景 |
| 异步复制 | 写操作在主数据中心确认后立即返回,异步同步到其他中心 | 对延迟敏感的场景 |
| 分布式共识 | 使用Paxos/Raft算法保证一致性 | 金融级一致性要求 |
全局流量调度
通过DNS解析或全局负载均衡(GSLB),将用户请求引导到最近的数据中心。当某个数据中心故障时,自动将流量切换到其他健康的数据中心。
异地多活架构模式
同城双活:两个数据中心在同一城市的不同区域,通过高速专线连接。延迟极低(通常1ms以内),数据同步容易。
异地双活:两个数据中心在不同城市,网络延迟较高(通常10-50ms),需要采用异步复制。
三地五中心:三个城市部署五个数据中心,任一城市发生灾难都不影响服务。这是互联网大厂的标准架构。
容灾的关键指标
| 指标 | 含义 | 典型要求 |
|---|---|---|
| RPO(Recovery Point Objective) | 可接受的最大数据丢失量 | 金融:0;电商:秒级 |
| RTO(Recovery Time Objective) | 可接受的最大恢复时间 | 金融:秒级;一般业务:分钟级 |
RPO越小,数据丢失越少;RTO越小,服务恢复越快。两者越低,成本越高。
前端在容灾中的角色
前端可以通过以下方式配合容灾策略:
- 静态资源部署在CDN上,天然具备多节点容灾能力
- 接口请求支持多域名容灾(主域名不可用时自动切换备用域名)
- Service Worker缓存关键资源,网络故障时提供离线体验
- 前端埋点上报容灾事件,帮助后端快速定位问题
↑